package com.sfpay.merchant.auth.entity.system;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.sfpay.merchant.auth.shiro.enums.OnlineStatus;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.Map;

/**
 * <p>
 * 在线用户记录
 * </p>
 * @author fangchen
 * @since 2022-08-09
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("sys_user_online")
public class SysUserOnline implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 用户会话id
     */
    @TableId("sessionId")
    private String sessionid;

    /**
     * 登录账号
     */
    @TableField("login_name")
    private String loginName;

    /**
     * 部门名称
     */
    @TableField("dept_name")
    private String deptName;

    /**
     * 登录IP地址
     */
    @TableField("ipaddr")
    private String ipaddr;

    /**
     * 登录地点
     */
    @TableField("login_location")
    private String loginLocation;

    /**
     * 浏览器类型
     */
    @TableField("browser")
    private String browser;

    /**
     * 操作系统
     */
    @TableField("os")
    private String os;

    /**
     * 在线状态on_line在线off_line离线
     */
    @TableField("status")
    private OnlineStatus status = OnlineStatus.on_line;

    /**
     * session创建时间
     */
    @TableField("start_timestamp")
    private Date startTimestamp;

    /**
     * session最后访问时间
     */
    @TableField("last_access_time")
    private Date lastAccessTime;

    /**
     * 超时时间，单位为分钟
     */
    @TableField("expire_time")
    private Long expireTime;

    /**
     * 请求参数
     */
    @TableField(exist = false)
    private Map<String, Object> params;
}
